home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 2
/
The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO
/
clang
/
dtk_demo.zip
/
CALCONV.C
< prev
next >
Wrap
C/C++ Source or Header
|
1991-09-12
|
3KB
|
90 lines
/* CALCONV.C
* last mod.: 10-AUG-91
*/
#include <STDIO.H>
#include <STDLIB.H>
#include <L_DATE.H>
#include <L_STR.H>
Uchar *usage =
"\nThis program provides three calendrical conversions:\n"
"1. For date to day-of-week and Julian day number "
"use CALCONV month day year.\n"
"2. For Julian day number to date and day-of-week use CALCONV jdn.\n"
"3. For days between dates use CALCONV m1 d1 y1 m2 d2 y2.\n"
"The number of parameters (3, 1 or 6) determines the conversion performed.\n"
"All dates are in the Gregorian calendar "
"(or in the proleptic Gregorian calendar\n"
"if prior to October 15, 1592 (Gregorian)).\n";
Uchar date_str[64], scratch[32];
/*-----------------------------*/
void main(int argc, char *argv[])
{
int dow;
long jdn, n;
Date date, date1, date2;
Date_format df;
set_date_format_default(&df);
if ( argc != 2 && argc != 4 && argc != 7 )
{
printf(usage);
exit(0);
}
switch ( argc )
{
case 2: /* Julian day number to date and day-of-week */
n = atol(argv[1]);
jdn_to_date(n,&date);
df.full_day_name = TRUE;
date_to_str(&date,&df,date_str);
sltoa_commas(n,scratch);
printf("Julian day number %s is %s (Gregorian).\n",
scratch,date_str);
break;
case 4: /* Date to day-of-week and Julian day number */
date.month = atoi(argv[1]);
date.day = atoi(argv[2]);
date.year = atol(argv[3]);
dow = day_of_week(&date);
if ( dow == -1 )
printf("Date invalid.\n");
else
{
df.full_day_name = FALSE;
df.short_day_name = FALSE;
date_to_str(&date,&df,date_str);
printf("Day-of-week for %s is %s.\n",
date_str,day_name(dow));
jdn = date_to_jdn(&date);
if ( jdn == _INVALID )
printf("Date invalid.\n");
else
{
sltoa_commas(jdn,scratch);
printf("Julian day number is %s.\n",scratch);
}
}
break;
case 7: /* days between dates */
date1.month = atoi(argv[1]);
date1.day = atoi(argv[2]);
date1.year = atol(argv[3]);
date2.month = atoi(argv[4]);
date2.day = atoi(argv[5]);
date2.year = atol(argv[6]);
n = days_in_date_range(&date1,&date2);
if ( n == -1L )
printf("One or both dates invalid.\n");
else
printf("Days between (and including) dates = %ld.\n",n);
break;
}
}